#pragma once

#include <cstdint>

#include <DirectXMath.h>

struct ID3D10Buffer;
struct ID3D10Device;
struct ID3D10ShaderResourceView;

namespace D3D10Geometry
{
    class Spheres 
    {
    public:

        Spheres();
        ~Spheres();
        
        void init(ID3D10Device * const device);
        void draw();

    private:
        DirectX::XMFLOAT4X4A mFirstSphereTranslationMatrix;
        DirectX::XMFLOAT4X4A mSecondSphereTranslationMatrix;
        DirectX::XMFLOAT4X4A mThirdSphereTranslationMatrix;
        DirectX::XMFLOAT4X4A mFourthSphereTranslationMatrix;
        DirectX::XMFLOAT4X4A mCubeMapSphereWorld;
        DirectX::XMFLOAT4X4A mTextureMatrix;

        ID3D10Device* mDevice;
        ID3D10Buffer* mVertexBuffer;
        ID3D10Buffer* mIndexBuffer;

        ID3D10ShaderResourceView* mStoneMapRV;
        ID3D10ShaderResourceView* mBlackMapRV;
        ID3D10ShaderResourceView* mSpecularMapRV;
        ID3D10ShaderResourceView* mCubeMapRV;

        uint32_t mNumVertices;
        uint32_t mNumIndices;
    };

}
